package com.qtu.entity;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.*;

/**
 * 购物车
 * @author CaiYinWei
 * @create 2020-07-08 16:06
 */

public class Cart implements Serializable {



    private Set<CartItem> set;
    public Cart() {

        this.set=new HashSet<>();
    }

    public Set<CartItem> getList() {
        return set;
    }

    public void setList(Set<CartItem> set) {
        this.set = set;
    }

    /**
     * 讲商品item加入购物车map
     * @param cartItem
     * @param num
     */
    public void addCartMap(CartItem cartItem, Integer num) {
//        boolean b = this.cartMap.containsKey(cartItem.getGoodsId().toString());
        boolean b = false;
        CartItem cartItem1=null;
        for (CartItem item : set) {
            if (item.getId().equals(cartItem.getId())){
                b=true;
                cartItem1=item;
            }
        }

        //购物车存在该商品
        if (b) {
            cartItem1.setGoodsNum(cartItem1.getGoodsNum()+num);
            cartItem1.setTotalPrice(cartItem1.getPrice().multiply(new BigDecimal(cartItem1.getGoodsNum())));
//            this.cartMap.put(cartItem1.getGoodsId().toString(),cartItem1);
            this.set.add(cartItem1);
        }else {
            cartItem.setGoodsNum(num);
            cartItem.setTotalPrice(cartItem.getPrice().multiply(new BigDecimal(cartItem.getGoodsNum())));
//           this. cartMap.put(cartItem.getGoodsId().toString(),cartItem);
            this.set.add(cartItem);

        }

    }

    /**
     * 从购物车中将商品item删除
     * @param
     */
    public void deleteItem(Integer id){
        for (CartItem cartItem : set) {
            if (cartItem.getId().equals(id)){
                this.set.remove(cartItem);
            }
        }

    }

    public void deleteAll(){
        Iterator<CartItem> iterator = set.iterator();
        while (iterator.hasNext()){
            CartItem item = iterator.next();
            iterator.remove();

        }


    }

    /**
     * 修改购物车商品数量
     * @param
     * @param num
     */
    public void updateGoodsNum(Integer id, Integer num){

        for (CartItem cartItem : set) {
            if (cartItem.getId().equals(id)){
                cartItem.setGoodsNum(num);
                cartItem.setTotalPrice(cartItem.getPrice().multiply(new BigDecimal(num)));
                set.add(cartItem);
            }
        }

    }
}
